Skip to content
掌握度

对比 JavaGuide《Loop Engineering》、二哥与小林《ReAct 会死循环吗?如何设计可靠的终止机制?》《什么是 Loop Engineering?》。

多版对比 ​

会死循环吗​:两边都说会。二哥给了最好的分类:​重复调用​(模型不记得试过)、​上下文混乱​(U 型注意力,十几步后忘了第 3 步试过的方案)、​错误重试​(幻觉出不存在的工具名)。JavaGuide 给了机制层的三要素:任何可靠循环必须有继续条件、退出条件、安全边界​(最大轮次 + 超时 + Token 预算)。

防死循环的手段​:二哥三条防线很实用——迭代上限(LangChain AgentExecutor 默认 15 轮)、调用指纹(工具名 + 关键参数 + 返回摘要,连续相同判卡死)、长对话摘要压缩。JavaGuide 用「两轮失败原因相同就停」表达同一件事。阈值不同但思路一致:不靠模型自觉,靠外层确定性规则。

Loop Engineering 定义,二哥有硬伤​:二哥把它窄化成「Agent 的 crontab」(定时调度),这只对应 JavaGuide 四分类里的时间驱动 Loop​,漏了事件驱动、目标驱动、人工审批驱动。JavaGuide 的定义更完整:Loop Engineering 是外层流程工程——触发方式、每轮喂什么材料、谁来验收、状态怎么落盘、什么时候转人工;内层的 Agent Loop(ReAct)和它是两层,别混。

各自独有​:JavaGuide 有权限分级(L0 只读到 L4 自动合并)和「把 Agent 自评当验收」的坑;二哥有 U 型注意力解释和 /goal 有终点、/loop 无终点很烧 Token 的产品观察。

小林​:给了一个重要的矫正——动作重复 ≠ 死循环​:分页拉取、限流下的有界重试都是合理重复,真正的信号是「任务状态没有向完成标准推进」。检测靠四个信号组合:动作指纹(参数标准化后哈希)、输出相似度、状态差分、调用图找 Handoff 环;步数/时间/Token 预算只是「保险丝」,只按最大步数停可能误杀深度任务。治理按序:区分错误类型 → 换参数/换工具 → 熔断 → 带版本的 Replan(已证伪的路径写进约束)→ 人工接管;有副作用的工具必须幂等键。循环本身是代码驱动的(检测输出 → 执行工具 → 填 Observation → 再调用),不是模型自己在转。

结论​:三道防线的框架用二哥的最好背,「以状态推进为准、预算只兜底」采纳小林的矫正——这是三家中对「怎么判死循环」最工程化的答案。

最优题解 ​

ReAct 真会死循环,而且停不停完全取决于模型判断,所以终止不能指望模型自觉。死循环就三种形态:重复调用、上下文混乱、错误重试。防线是外层确定性规则兜底:迭代上限、Token 预算、调用指纹去重——同一个工具带同样参数连续出现两三次就判卡死,长任务中途摘要压缩防止忘了试过什么。

Loop Engineering 是把这件事工程化:内层 Agent Loop 只负责「想→做→看结果」,外层 Loop 管触发(定时/事件/目标/审批)、每轮喂什么材料、用什么信号验收、状态落盘、什么时候转人工。一句话:内层循环保单步质量,外层循环保任务收敛。最容易踩的坑是把 Agent 自己的评价当验收信号——它会说自己做完了,必须用独立检查(测试通过、结果比对)来收口。

追问链 ​

追问:迭代上限设多少合适?​ 参考答:主流默认在十几轮这个量级,但正确做法是按任务的轮次分布定——从历史 Trace 里看 P95 完成轮数,上限设在略高于它的位置,同时配 Token 预算防止单轮爆量。

追问:怎么判断循环「没进展」?​ 参考答:不比对模型说了什么,比对状态变了没有——调用指纹(工具 + 参数 + 返回摘要)连续相同、或连续几轮失败原因相同,就终止或转人工。

我的理解 ​

这组题的坑是跟着二哥把 Loop Engineering 说成定时任务。正确的层次感是:​内层循环模型说了算,外层循环代码说了算​。Loop Engineering 的价值就是把「模型自觉」换成「外层确定性规则」——上限、指纹、独立验收、人工审批,全是代码,不信任模型的自我报告。

本站仅供个人学习使用,请勿外传